import {smsSend} from "../api/auth";

export default {
    data() {
        return {
            isAgree: false,
            formData: {
                //手机号
                mobile: '',
                //密码
                password: '',
                //重复密码
                passwords: '',
                //短信验证码
                code: '',
                //身份证号码
                identify_num: '',
                //姓名
                nickname: '',
                //邀请码
                share_code: '',
            },
            countdown: 60, // 倒计时秒数
            isButtonDisabled: false, // 按钮是否禁用
            buttonText: "获取验证码", // 按钮文本
            countdownTimer: null, // 定时器
        }
    },

    methods: {
        clickAgree() {
            this.isAgree = !this.isAgree
        },
        validateForm(formType) {
            // 验证手机号码
            const validateMobile = () => {
                const mobilePattern = /^1[3-9]\d{9}$/; // 手机号的正则表达式（简单验证）
                if (!this.formData.mobile) {
                    return '请填写手机号码';
                }
                if (!mobilePattern.test(this.formData.mobile)) {
                    return '手机号码格式不正确';
                }
                return null;
            };

            // 验证密码
            const validatePassword = () => {
                if (!this.formData.password) {
                    return '请输入密码';
                }
                return null;
            };

            // 验证确认密码
            const validateConfirmPassword = () => {
                if (!this.formData.passwords) {
                    return '请输入确认密码';
                }
                if (this.formData.password !== this.formData.passwords) {
                    return '两次输入密码不一致';
                }
                return null;
            };

            // 验证身份证号码
            const validateIdentifyNum = () => {
                const idCardPattern = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9Xx])$/; // 身份证号的正则表达式
                if (!this.formData.identify_num) {
                    return '请输入身份证号码';
                }
                if (!idCardPattern.test(this.formData.identify_num)) {
                    return '身份证号码格式不正确';
                }
                return null;
            };

            // 验证身份证号码
            const validateIdCard = () => {
                const idCardPattern = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9Xx])$/; // 身份证号的正则表达式
                if (!this.formData.idcard) {
                    return '请输入身份证号码';
                }
                if (!idCardPattern.test(this.formData.idcard)) {
                    return '身份证号码格式不正确';
                }
                return null;
            };

            // 验证姓名
            const validateUserName = () => {
                if (!this.formData.nickname) {
                    return '请输入姓名';
                }
                return null;
            };

            // 验证姓名
            const validateRealName = () => {
                if (!this.formData.realname) {
                    return '请输入姓名';
                }
                return null;
            };

            // 验证上传
            const validateAuthUpload = () => {
                if (!this.formData.z_image_url) {
                    return '请上传身份证正面照';
                }
                if (!this.formData.f_image_url) {
                    return '请上传身份证反面照';
                }
                if (!this.formData.face_url) {
                    return '请上传人脸照';
                }
                return null;
            };

            // 验证短信验证码
            const validateCode = () => {
                if (!this.formData.code) {
                    return '请输入短信验证码';
                }
                return null;
            };

            if (formType === 'auth') {
                let error = validateIdCard();
                if (error) return error;

                error = validateRealName();
                if (error) return error;

                error = validateAuthUpload();
                if (error) return error;

            }

            // 处理不同的表单类型
            if (formType === 'register' || formType === 'resetpwd') {
                // 注册或重置密码表单
                let error = validateMobile();
                if (error) return error;

                error = validateCode();
                if (error) return error;

                error = validatePassword();
                if (error) return error;

                error = validateConfirmPassword();
                if (error) return error;

                if (formType === 'register') {
                    // error = validateIdentifyNum();
                    // if (error) return error;

                    error = validateUserName();
                    if (error) return error;
                }
            }

            if (formType === 'login') {
                // 登录表单
                let error = validateMobile();
                if (error) return error;

                let passwordError = validatePassword();
                if (passwordError) return passwordError;
            }

            if (formType === 'codeLogin') {
                // 短信验证码登录表单
                let error = validateMobile();
                if (error) return error;

                let codeError = validateCode();
                if (codeError) return codeError;
            }

            if (formType === 'code') {
                // 短信验证码登录表单
                let error = validateMobile();
                if (error) return error;
            }

            return true; // 如果所有验证都通过，返回 true
        },
        getSmsSend(type) {
            // 校验手机号是否填写
            const result = this.validateForm('code');
            if (result !== true) {
                this.$tip(result, 'fail');
                return;
            }

            // 防止重复点击，直接返回
            if (this.isButtonDisabled) {
                return;
            }

            // 禁用按钮并启动倒计时
            this.isButtonDisabled = true;
            this.startCountdown();

            // 发送验证码
            smsSend({
                mobile: this.formData.mobile,
                event: type
            })
                .then(res => {
                    // 如果成功，可以在这里添加成功后的逻辑（如提示、日志等）
                    this.$tip('验证码发送成功', 'success');
                })
                .catch(err => {
                    // 恢复按钮状态并提示错误信息
                    this.isButtonDisabled = false;
                    this.$tip('验证码发送失败，请重试', 'fail');
                });
        },
        // 启动倒计时
        startCountdown() {
            // 每秒更新一次倒计时
            this.countdownTimer = setInterval(() => {
                if (this.countdown > 0) {
                    this.buttonText = `${this.countdown}s`; // 更新按钮文本为倒计时
                    this.countdown--;
                } else {
                    clearInterval(this.countdownTimer); // 停止倒计时
                    this.isButtonDisabled = false; // 启用按钮
                    this.buttonText = "重新获取"; // 修改按钮文本为“重新获取”
                    this.countdown = 60; // 重置倒计时
                }
            }, 1000);
        },
    },
    onUnload() {
        // 页面卸载时清除定时器，避免内存泄漏
        if (this.countdownTimer) {
            clearInterval(this.countdownTimer);
        }
    },
}